#pragma execution_character_set("utf-8") // 设置源文件编码为 UTF-8，确保中文不乱码

#include "mainwindowQToolButtonProsD2.h"        // 包含头文件
#include <QApplication>        // QApplication 用于获取样式
#include <QStyle>              // QStyle 提供系统图标风格接口
#include <QMessageBox>         // QMessageBox 用于弹出提示框

// 构造函数：初始化窗口和组件
MainWindowQToolButtonProsD2::MainWindowQToolButtonProsD2(QWidget* parent)
        : QMainWindow(parent) // 初始化父类
{
    setWindowTitle("QToolBar 多按钮示例"); // 设置窗口标题
    resize(500, 300);                     // 设置窗口大小

    // 创建工具栏对象，设置标题并绑定到当前窗口
    toolBar = new QToolBar("工具栏", this);

    // 添加工具栏到主窗口顶部区域
    addToolBar(Qt::TopToolBarArea, toolBar);

    // 获取当前系统的样式（用于提取标准图标）
    QStyle* style = QApplication::style();

    // ========== 添加第一个工具按钮：选择 ==========
    selectBtn = new QToolButton(this);                           // 创建按钮
    selectBtn->setText("选择");                                  // 设置按钮文字
    selectBtn->setIcon(style->standardIcon(QStyle::SP_ArrowUp)); // 设置标准图标
    selectBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);  // 设置文字在图标下
    toolBar->addWidget(selectBtn);                               // 将按钮添加到工具栏
    connect(selectBtn, &QToolButton::clicked, this,              // 绑定点击事件
            &MainWindowQToolButtonProsD2::onSelectClicked);

    // ========== 添加第二个工具按钮：画笔 ==========
    brushBtn = new QToolButton(this);
    brushBtn->setText("画笔");
    brushBtn->setIcon(style->standardIcon(QStyle::SP_DriveFDIcon)); // 设置标准图标
    brushBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    toolBar->addWidget(brushBtn);
    connect(brushBtn, &QToolButton::clicked, this,
            &MainWindowQToolButtonProsD2::onBrushClicked);

    // ========== 添加第三个工具按钮：橡皮擦 ==========
    eraserBtn = new QToolButton(this);
    eraserBtn->setText("橡皮擦");
    eraserBtn->setIcon(style->standardIcon(QStyle::SP_TrashIcon)); // 设置垃圾桶图标
    eraserBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    toolBar->addWidget(eraserBtn);
    connect(eraserBtn, &QToolButton::clicked, this,
            &MainWindowQToolButtonProsD2::onEraserClicked);

    // ========== 添加第四个工具按钮：颜色 ==========
    colorBtn = new QToolButton(this);
    colorBtn->setText("颜色");
    colorBtn->setIcon(style->standardIcon(QStyle::SP_DialogYesButton)); // 标准图标
    colorBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    toolBar->addWidget(colorBtn);
    connect(colorBtn, &QToolButton::clicked, this,
            &MainWindowQToolButtonProsD2::onColorClicked);
}

// 析构函数
MainWindowQToolButtonProsD2::~MainWindowQToolButtonProsD2()
{
    // Qt会自动清理对象，不需要手动 delete
}

// ========== 每个按钮对应的槽函数，显示提示框 ==========

// 点击“选择”按钮
void MainWindowQToolButtonProsD2::onSelectClicked()
{
    QMessageBox::information(this, "工具", "你点击了【选择】按钮");
}

// 点击“画笔”按钮
void MainWindowQToolButtonProsD2::onBrushClicked()
{
    QMessageBox::information(this, "工具", "你点击了【画笔】按钮");
}

// 点击“橡皮擦”按钮
void MainWindowQToolButtonProsD2::onEraserClicked()
{
    QMessageBox::information(this, "工具", "你点击了【橡皮擦】按钮");
}

// 点击“颜色”按钮
void MainWindowQToolButtonProsD2::onColorClicked()
{
    QMessageBox::information(this, "工具", "你点击了【颜色选择】按钮");
}
